import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class code1 {
//      力扣 150 字母异位词分组
public List<List<String>> groupAnagrams(String[] strs) {
    // 分析题目，可以看到这里需要将 strs 中的参数进行分类
    // 每一组中的元素都是有着相同的字母，只是排列顺序不同而已
    // 也就是说，对于单个的参数，可以进行一遍排序操作，这样将一个参数作为 key 即可

    HashMap<String, List<String>> map = new HashMap<>();

    for(String str : strs) {
        // 首先将 String 类型的数组转换为 Char 类型的
        char[] arr = str.toCharArray();
        Arrays.sort(arr);

        String key = new String(arr);
        // getOrDefault方法的调用。
        //此方法尝试从map中获取与给定key相关联的值。如果map中包含该key，则该方法返回与该key相关联的值（在此情况下，该值是一个List<String>）。
        //如果map中不存在该key，则该方法返回传递给它的第二个参数（在此情况下，是一个新创建的空ArrayList<String>）。
        List<String> list = map.getOrDefault(key, new ArrayList<String>());
        list.add(str);
        map.put(key, list);
    }

    return new ArrayList<List<String>>(map.values());
}
}
